/**
 * Created by IntelliJ IDEA.
 * User: Taras_Brzezinsky
 * Date: 8/23/11
 * Time: 5:49 PM
 * To change this template use File | Settings | File Templates.
 */

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.StringTokenizer;

public class TaskB extends Thread {
    public TaskB() {
        this.input = new BufferedReader(new InputStreamReader(System.in));
        this.output = new PrintWriter(System.out);
        this.setPriority(Thread.MAX_PRIORITY);
    }

    private void solve() throws Throwable {
        int n = nextInt(), m = nextInt(), h = nextInt() - 1;
        int []s = new int[m];
        int sum = 0;
        for (int i = 0; i < m; ++i) {
            s[i] = nextInt();
            sum += s[i];
        }
        if (sum < n) {
            output.println(-1);
            return;
        }
        --sum;
        --n;
        int amount = s[h] - 1;
        if (sum - amount < n) {
            output.println(1);
            return;
        }
        double result = 1;
        int first = sum - amount, second = sum - n - amount;
        for (int i = 1; i <= amount; ++ i){
            result /= first + 1;
            result *= second + 1;
            ++first;
            ++second;
        }
        output.printf("%.10f", 1.0 - result);


    }

    public void run() {
        try {
            solve();
        } catch (Throwable e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
            System.exit(666);
        } finally {
            output.flush();
            output.close();
        }
    }

    public static void main(String[] args) {
        new TaskB().start();
    }

    private int nextInt() throws IOException {
        return Integer.parseInt(nextToken());
    }

    private long nextLong() throws IOException {
        return Long.parseLong(nextToken());
    }

    private double nextDouble() throws IOException {
        return Double.parseDouble(nextToken());
    }

    private String nextToken() throws IOException {
        while (tokens == null || !tokens.hasMoreTokens()) {
            tokens = new StringTokenizer(input.readLine());
        }
        return tokens.nextToken();
    }

    private BufferedReader input;
    private PrintWriter output;
    private StringTokenizer tokens = null;
}
